package br.com.esrestaurante.faces;

import java.io.IOException;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import br.com.esrestaurante.entidades.Usuario;
import br.com.esrestaurante.tipos.TipoPerfilUsuario;

public class Faces {
	
	public Usuario usuarioWB;
	
	public Faces() {
		
		usuarioWB = getUsuarioLogado();
	}
	
	
	public void setAttributeSession(String atributo, Object obj){			
		
		HttpSession session = getSession();
		session.setAttribute(atributo, obj);
	}
	
	
	public Object getAttributeSession(String atributo){
		HttpSession session = getSession();
		return session.getAttribute(atributo);
	}
	
	public void setAttribute(String atributo, Object obj){			
		HttpServletRequest request = getRequest();
		request.setAttribute(atributo, obj);
	}
	
	
	public Object getAttribute(String atributo){
		HttpServletRequest request = getRequest();		
		return request.getAttribute(atributo);
	}

	public HttpSession getSession() {		
		HttpServletRequest request = getRequest();
		return request.getSession();
		
	}
	
	public HttpServletRequest getRequest() {
		FacesContext context = FacesContext.getCurrentInstance();
		return (HttpServletRequest) context.getExternalContext().getRequest();
	}
	
	public Usuario getUsuarioLogado() {		
		Object obj = getAttributeSession("usuarioLogado");		
		if(obj != null){
			return (Usuario)  obj;		
		}else{
			return null;
		}
	}
	
	public void adicionarMsgErro(String titulo, String msg){
		FacesContext
		.getCurrentInstance()
		.addMessage(null, 
					new FacesMessage (FacesMessage.SEVERITY_ERROR, 
									  titulo, 
									  msg));
	}
	
	public void adicionarMsgAviso(String titulo, String msg){
		FacesContext
			.getCurrentInstance()
			.addMessage(null, 
						new FacesMessage (FacesMessage.SEVERITY_WARN, 
										  titulo, 
										  msg));
		
	}
	
	public void redirecionar(String destino) throws IOException {
		FacesContext context = FacesContext.getCurrentInstance();
		HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
		HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
		response.sendRedirect(request.getContextPath() + destino);
	}
	
	public String getStringRetorno(){
		
		
		TipoPerfilUsuario perfilUsuario = usuarioWB.getPerfil();
		
		if(TipoPerfilUsuario.GERENTE.equals(perfilUsuario)) {
			return "toInicialGerente";
		}
		if(TipoPerfilUsuario.GARCOM.equals(perfilUsuario)) {
			return "toInicialGarcom";
		}
		if(TipoPerfilUsuario.BALCAO.equals(perfilUsuario)) {
			return "toInicialBalcao";
		}
		if(TipoPerfilUsuario.CAIXA.equals(perfilUsuario)) {
			return "toInicialCaixa";
		}
		if(TipoPerfilUsuario.CLIENTE.equals(perfilUsuario)) {
			return "toInicialCliente";
		}
		if(TipoPerfilUsuario.COZINHA.equals(perfilUsuario)) {
			return "toInicialCozinha";
		}
		
		return null;
	}
}
